package listeners;

import java.io.PrintWriter;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

import beans.Counter;
import beans.UserDAO;

//本侦听器主要侦听会话，以确定同时在线的人数，以及网站的访问人数
//本侦听器主要侦听会话，以确定同时在线的人数，以及网站的访问人数
//本侦听器主要侦听会话，以确定同时在线的人数，以及网站的访问人数

public class SessionListener implements ServletContextListener, HttpSessionListener, ServletRequestListener {

	static int onlinecount = 0;// 定义静态数据成员

	@Override
	public void sessionCreated(HttpSessionEvent se) {
		
		onlinecount++;// .类的静态成员方法和非静态成员方法都可以直接访问静态成员变量
		// se.getSession().setAttribute("tongshi", onlinecount);//这种方法不行，因为退出的时候无法用属性
		se.getSession().getServletContext().setAttribute("tongshi", onlinecount);
		se.getSession().getServletContext().setAttribute("newsession", true);
		System.out.println("进来了一个会话++++++++++++");

	}

	@Override
	public void sessionDestroyed(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		onlinecount--;
		// se.getSession().setAttribute("tongshi",
		// onlinecount);既然已经退出了，这里再设置就是一厢之意了，所以不行,所以，下面使用一个静态方面表达
		se.getSession().getServletContext().setAttribute("tongshi", onlinecount);
		se.getSession().getServletContext().setAttribute("newsession", false);
		System.out.println("一个会话退出了------------");

	}

	public static int getc() {
		return onlinecount;
	}

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		// TODO Auto-generated method stub

	}

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		sce.getServletContext().getInitParameter("param-name");

	}

	@Override
	public void requestDestroyed(ServletRequestEvent sre) {
		// TODO Auto-generated method stub

	}

	@Override
	public void requestInitialized(ServletRequestEvent sre) {
		// TODO Auto-generated method stub

	}

}
